package main

import "fmt"

func testChannel() {
	ch := make(chan int, 2)
	ch <- 10
	ch <- 20

	/**
	以下代码会造成程序死锁，报错：fatal error: all goroutines are asleep - deadlock!
	因为ch的缓冲区容量大小是2，此时缓冲区容量已满，就会导致一直阻塞。
	*/
	ch <- 30
	fmt.Println(<-ch)

	fmt.Println(<-ch)
	fmt.Println(<-ch)

	/**
	如果ch<-30放在这里就不会报错，因为此时，缓冲区的数据已经被接收方接收了，此时缓冲区为空
	*/
	ch <- 30
	fmt.Println(<-ch)
}

// func main() {
// 	testChannel()
// }
